package yl.hs.bmipfull.daos.material;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import yl.hs.bmipfull.daos.BaseDao;
import yl.hs.bmipfull.pojo.material.RawMaterialPriceEntity;
import yl.hs.bmipfull.viewmodels.salemanmage.SetTimeVO;

import java.util.List;
import java.util.Map;

/**
 * @author 张凯
 * @apiNote 原材耗材价格持久层接口
 * @since 2022年03月07日 16时18分11秒
 */
@Repository
public interface IRawMaterialPriceDao extends BaseDao<RawMaterialPriceEntity> {


    /**
     * 分页查询原材耗材价格信息
     *
     * @param map 查询条件 {@link RawMaterialPriceEntity}
     * @return 站内信息-List<{@link RawMaterialPriceEntity}>
     */
    List<RawMaterialPriceEntity> queryPage(@Param("map") Map<String, Object> map);

    /**
     * 根据查询条件统计数据数量
     *
     * @param map 查询条件
     * @return 数据数量
     */
    Integer queryCountByCondition(@Param("map") Map<String, Object> map);


    /**
     * 根据原材编号和价格年份，月份获取价格信息
     *
     * @param rmSn       原材编号
     * @param priceYear  价格年份
     * @param priceMonth 价格月份
     * @return 价格信息
     */
    RawMaterialPriceEntity findByRmSnAndData(String rmSn, Integer priceYear, Integer priceMonth);

    /**
     * 根据id删除
     *
     * @param id id
     * @return 执行结果
     */
    Integer deleteById(Integer id);


    /**
     * 根据年份和月份删除价格信息
     * @param priceYear  价格年份
     * @param priceMonth 价格月份
     * @return 执行条数
     */
    Integer deleteByPriceYearAndPriceMonth(Integer priceYear, Integer priceMonth);

    /**
     * 根据id获取原材价格信息
     * @param id id
     * @return 价格信息
     */
    RawMaterialPriceEntity findById(Integer id);

    /**
     * 获取时间信息
     * @return 时间信息
     */
    List<SetTimeVO> getSetTime();

    List<RawMaterialPriceEntity> queryByRmSnList(@Param("rmSNList") List<String> configRmSnSet);
}